package login

import (
	"autoDeploy/service/login"
	"fmt"
	"github.com/gin-gonic/gin"
	"net/http"
)

type UserInfo struct{}

//	Login
//
// 描述信息：用户的登录接口
//
// Param：
//
//	c ：gin实例
//
// Return：登录状态码0或1  token  用户信息
func (u UserInfo) Login(c *gin.Context) {
	//fmt.Println("login controller")
	//解析前端get请求的参数
	username := c.Query("username")
	password := c.Query("password")
	Phone := c.Query("phone")

	//声明一个接受用户登录数据的结构体
	var user login.User

	//将前端的数据传递给这个结构体
	user.Username = username
	user.Password = password
	user.Phone = Phone
	/*controller 层将前端数据封装好了*/

	//调用 service 层进行相应的的登录
	code, tokenStr, err := login.Login(user)
	if err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{"code": code, "token": tokenStr, "err": err})
		return
	}

	//将用户的数据拿到并返回
	data, err := login.FetchUserData(Phone)
	if err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{"code": code, "token": tokenStr, "err": err})
		return
	}
	fmt.Println(data)
	c.JSON(http.StatusOK, gin.H{"code": code, "token": tokenStr,
		"user_id": data.UserID, "user_name": data.Username,
		"phone": data.Phone, "role_id": data.RoleID,
		"role_name": data.RoleName, "routes": data.Routes})
	return

}
